package com.weibo.db;

import java.io.Serializable;
import java.sql.*;
import java.util.List;

public class DataBaseConnection implements Serializable {

	private Connection con = null;
	private PreparedStatement pstmt = null;
	private ResultSet rs = null;

	//用masql直接连接
	public Connection getConnection() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			//sss为数据库名字
			String url = "jdbc:mysql://localhost/weibo?user=root&password=manager&characterEncoding=utf8";
			con = DriverManager.getConnection(url);
			if (con != null) {
				System.out.println("连接数据库成功！");
			}
		} catch (Exception e) {
			// e.printStackTrace();

		}
		return con;
	}
	//连接数据(就是select的查询语句)
	public  ResultSet getreResultSet(String sql,List<Object> temp) throws SQLException{
		con = getConnection();
		if(con != null){
			//创建一个PreparedStatement对象
			pstmt = con.prepareStatement(sql);
			if(temp !=null && temp.size()>0){
				for(int i =0;i<temp.size();i++){
					pstmt.setObject(i+1, temp.get(i));
				}
			}
			rs = pstmt.executeQuery();
		}
		return rs;
	}
	// 返回结果集
	public ResultSet getResultSet(String sql, List<Object> temp)
			throws SQLException {
		// 连数据

		con = getConnection();

		if (con != null) {
			// 创建PreparedStatement对象
			pstmt = con.prepareStatement(sql);
			if (temp != null && temp.size() > 0) {
				for (int i = 0; i < temp.size(); i++) {
					pstmt.setObject(i + 1, temp.get(i));

				}
			}
			// 执行
			rs = pstmt.executeQuery();
		}

		return rs;
	}
	
	
	// 返回结果集
		public void delete(String sql)throws SQLException {
			// 连数据

			con = getConnection();

			if (con != null) {
				// 创建PreparedStatement对象
				pstmt = con.prepareStatement(sql);
				// 执行
				pstmt.executeUpdate(sql);
			}
		}
	
	
	public void save(String sql)throws SQLException {
		// 连数据

		con = getConnection();

		if (con != null) {
			// 创建PreparedStatement对象
			pstmt = con.prepareStatement(sql);
			// 执行
			pstmt.executeUpdate(sql);
		}
	}
	
	// 返回影响行数
	public int getRows(String sql, List<Object> temp) throws SQLException {
		int count = 0;
		getConnection();

		if (con != null) {
			pstmt = con.prepareStatement(sql);
			if (temp != null && temp.size() > 0) {
				for (int i = 0; i < temp.size(); i++) {
					pstmt.setObject(i + 1, temp.get(i));
				}
			}
			count = pstmt.executeUpdate();
		}

		return count;
	}

	// 关闭
	public void closeAll() {

		try {
			if (rs != null) {
				rs.close();
				rs = null;
			}
		} catch (SQLException e) {
			// e.printStackTrace();
			System.out.println(e.getMessage());
		}

		try {
			if (pstmt != null) {

				pstmt.close();
				pstmt = null;

			}
		} catch (SQLException e1) {
			// e.printStackTrace();
			System.out.println(e1.getMessage());
		}
		try {
			if (con != null) {
				con.close();
				con = null;
			}
		} catch (SQLException e) {
			// e.printStackTrace();
			System.out.println(e.getMessage());
		}
	}
}
